import { ApiHideProperty, ApiProperty } from "@nestjs/swagger";
import { IsNotEmpty, IsPositive, Max, Min } from "class-validator";
import { Transform } from "class-transformer";

/**
 * @Description: 分页数据返回接口
 * @author zhaojiuyi
 * @date 2023/4/7
 */
export class PagingResponseDto<T=any> {
  /* 总条数 */
  total: number;

  /* 实体列表 */
  @ApiHideProperty()
  list: T[];
}

export class PagingRequestDto {

  @ApiProperty({
    description: "页码（从0开始的整数，不得小于0）",
    required: true
  })
  @IsNotEmpty()
  @Min(0) // 页码不能小于0
  @Transform(({ value }) => parseInt(value))
  pageNo: number;

  @ApiProperty({
    description: "页大小（从0开始的整数，不得小于0，最大100）",
    required: true
  })
  @IsNotEmpty()
  @Max(100) // 限制页面大小最多为100
  @IsPositive() // 大于0的整数
  @Transform(({ value }) => parseInt(value))
  pageSize: number;
}
